import request from '@/utils/request'

// 角色管理相关API
// 获取角色列表（分页）
export function getRoleList(params) {
  return request({
    url: '/api/system/roles/page',
    method: 'get',
    params
  })
}

// 获取所有角色（不分页）
export function getAllRoles() {
  return request({
    url: '/role/all',
    method: 'get'
  })
}

// 获取角色详情
export function getRoleDetail(roleId) {
  return request({
    url: `/role/detail/${roleId}`,
    method: 'get'
  })
}

// 创建角色
export function createRole(data) {
  return request({
    url: '/role/create',
    method: 'post',
    data
  })
}

// 更新角色
export function updateRole(data) {
  return request({
    url: '/role/update',
    method: 'put',
    data
  })
}

// 删除角色
export function deleteRole(roleId) {
  return request({
    url: `/role/delete/${roleId}`,
    method: 'delete'
  })
}

// 更新角色状态
export function updateRoleStatus(roleId, status) {
  return request({
    url: `/role/status/${roleId}`,
    method: 'put',
    data: {
      status
    }
  })
}

// 获取角色已分配的菜单
export function getRoleMenus(roleId) {
  return request({
    url: `/role/menus/${roleId}`,
    method: 'get'
  })
}

// 为角色分配菜单
export function assignRoleMenus(roleId, menuIds) {
  return request({
    url: `/role/assignMenus/${roleId}`,
    method: 'post',
    data: {
      menuIds
    }
  })
}

// 获取菜单树（用于分配菜单）
export function getMenuTree() {
  return request({
    url: '/menu/tree',
    method: 'get'
  })
}

// 检查角色代码是否存在
export function checkRoleCodeExists(roleCode, roleId = '') {
  return request({
    url: '/role/checkCode',
    method: 'get',
    params: {
      roleCode,
      roleId
    }
  })
}

// 默认导出所有API方法
export default {
  getRoleList,
  getAllRoles,
  getRoleDetail,
  createRole,
  updateRole,
  deleteRole,
  updateRoleStatus,
  getRoleMenus,
  assignRoleMenus,
  getMenuTree,
  checkRoleCodeExists
}